package LC;

/**
 * https://leetcode.com/problems/unique-paths/description/
 * A robot is located at the top-left corner of a m x n grid
 * (marked 'Start' in the diagram below).
 * The robot can only move either down or right at any point in time.
 * The robot is trying to reach the bottom-right corner of the grid
 * (marked 'Finish' in the diagram below).
 * How many possible unique paths are there?
 */
public class LC_062_UniquePaths_DP {
    public static void main(String[] args) {
        int n = Solution.uniquePaths(10, 10);
        System.out.println(n);
    }

    static class Solution {
        public static int uniquePaths(int m, int n) {
            int[][] grids = new int[m][n];
            for (int i = 0; i < n; i++)
                grids[0][i] = 1;
            for (int i = 1; i < m; i++)
                grids[i][0] = 1;
            for (int i = 1; i < m; i++)
                for (int j = 1; j < n; j++)
                    grids[i][j] = grids[i - 1][j] + grids[i][j - 1];
            return grids[m - 1][n - 1];
        }
    }
}
